﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Windows.Controls;
using BaocaoNPC.common;
using Component;
using CMISLibrary;
//using busBaoCao;
using CMISLibrary.Libraries;
using System.IO;
using Microsoft.VisualBasic;
using BaocaoNPC.Usercontrols.reports;


namespace BaocaoNPC.Usercontrols
{
    /// <summary>
    /// Interaction logic for NPC_INLOGCHAMNO.xaml
    /// </summary>
    public partial class NPC_INLOGCHAMNO : UserControl
    {
        #region Variables
        //bus_TienichNPC.cls_TienichNPC_bus bus = new bus_TienichNPC.cls_TienichNPC_bus();
        bus_TienichNPC.cls_ImportExcel_bus cls = new bus_TienichNPC.cls_ImportExcel_bus();
        public String strMadviqly = NPCUS_DanhMuc.Pglobal.strMa_dviqly != "" && NPCUS_DanhMuc.Pglobal.strMa_dviqly != null ? NPCUS_DanhMuc.Pglobal.strMa_dviqly : "PA";
        public string strUsername = NPCUS_DanhMuc.Pglobal.strTen_dangnhap != "" && NPCUS_DanhMuc.Pglobal.strTen_dangnhap != null ? NPCUS_DanhMuc.Pglobal.strTen_dangnhap : "NPC_ATM";
        public String strTen_dviqly = NPCUS_DanhMuc.Pglobal.strTen_dviqly != "" && NPCUS_DanhMuc.Pglobal.strTen_dviqly != null ? NPCUS_DanhMuc.Pglobal.strTen_dviqly : "cty..";
        public String strTen_dviqly_CT = NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT != "" && NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT != null ? NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT : "cap tren";
        public Int16 i16ThangHT = 0;
        public Int16 i16NamHT = 0;
        private int IN = 0,IGIO = 0;
        string maloi = "";
        DateTime? ngaynop = DateTime.Now.Date;
        #endregion

        public NPC_INLOGCHAMNO()
        {
            InitializeComponent();
            Component.TabIndexManager.RegisterTabManagerWithSelectAll(this);
            GET_THANGNAM_HT();
            GetD_DVI_QLY();
            Logtext_gio(false);
            dtpNgayNop.SelectedDate = DateTime.Now.Date;
            dtpThangHTtim.Text = "0" + i16ThangHT.ToString() + "/" + i16NamHT.ToString();
            DataSet ds = new DataSet();
            ds = GlobalServices.Service_NPCUS.get_DM_TNGAN(strMadviqly);
            txtthungan.AddItem(new CMIS2_TextBox.AutoCompleteEntry(ds));
        }
        public void showErrorMess(string s)
        {
            Component.Validate.ValidationManager.showMessOnView(this, 5000, s, Component.Validate.ValidationManager.MESSEGER_TYPE.ERROR_MESSAGE);
        }
        public void showSucrMess(string s)
        {
            Component.Validate.ValidationManager.showMessOnView(this, 5000, s, Component.Validate.ValidationManager.MESSEGER_TYPE.SUCCESS_MESSAGE);
        }
        private void GET_THANGNAM_HT()
        {
            try
            {
                DataSet dsthanglviec = new DataSet();
                //bus_TienichNPC.cls_TienichNPC_bus bus = new cls_TienichNPC_bus();
                //dsthanglviec = bus.get_thang_lviec();
                dsthanglviec = GlobalServices.Service_NPCUS.get_thang_lviec();
                if (dsthanglviec != null && dsthanglviec.Tables.Count > 0)
                {
                    foreach (DataRow dr in dsthanglviec.Tables[0].Rows)
                        if (dr["PHAN_HE"].ToString() == "CN" && dr["MA_DVIQLY"].ToString() == strMadviqly)
                        {
                            i16ThangHT = Convert.ToInt16(dr["THANG"]);
                            i16NamHT = Convert.ToInt16(dr["NAM"]);
                        }
                }
            }
            catch
            {
                i16ThangHT = Convert.ToInt16(DateTime.Now.Month);
                i16NamHT = Convert.ToInt16(DateTime.Now.Year);
            }
        }
        private void GetD_DVI_QLY()
        {
            try
            {
                DataSet dsD_DVI_QLY = new DataSet();

                //cls_TienichNPC_bus cls = new cls_TienichNPC_bus();

                //dsD_DVI_QLY = cls.select_D_DVI_QLY_ALL(strMa_dviqly);

                dsD_DVI_QLY = GlobalServices.Service_NPCUS.select_D_DVI_QLY_ALL(strMadviqly);

                if (dsD_DVI_QLY == null)
                {
                    System.Windows.MessageBox.Show("Không lấy được danh mục đơn vị quản lý.");
                }
                else
                {
                    DataView dv = dsD_DVI_QLY.Tables["D_DVI_QLY"].DefaultView;
                    cboDonVi.ItemsSource = dv;
                    cboDonVi.DisplayMemberPath = "TEN_DVIQLY";
                    cboDonVi.SelectedValuePath = "MA_DVIQLY";
                    cboDonVi.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message.ToString());
            }
        }
        

        private void txt_TUGIO_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            try
            {

                short val;
                if (!Int16.TryParse(e.Text, out val) || Convert.ToInt16(txt_TUGIO.Text + e.Text) > 12)
                {
                    e.Handled = true;
                    showErrorMess("Từ giờ phải nhập trong phạm vi 0 -> 12:");
                    return;
                }


                e.Handled = false;
                return;

            }
            catch (Exception ex)
            {
                showErrorMess("Lỗi khi nhập: " + ex.Message);
            }
        }

        private void txt_DENGIO_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            try
            {
                short val;
                if (!Int16.TryParse(e.Text, out val) || Convert.ToInt16(txt_DENGIO.Text + e.Text) > 12)
                {
                    e.Handled = true;
                    showErrorMess("Đến giờ phải nhập trong phạm vi 0 -> 12:");
                    return;
                }
                e.Handled = false;
                return;

            }
            catch (Exception ex)
            {
                showErrorMess("Lỗi khi nhập: " + ex.Message);
            }
        }
        private bool check_IN()
        {
            if (dtpThangHTtim.Text == string.Empty)
            {
                showErrorMess("Hãy nhập tháng năm công nợ!");
                dtpThangHTtim.Focus();
                return false;
            }
            if (dtpNgayNop.Text == string.Empty)
            {
                showErrorMess("Hãy nhập ngày in log!");
                dtpNgayNop.Focus();
                return false;
            }
            if(chk_GIO.IsChecked == true)
            {
                if((cbo_AMPMTU.Text.Trim() =="AM") && (cbo_AMPMDEN.Text.Trim() =="AM"))
                {
                    if (Convert.ToInt16(txt_TUGIO.Text) > Convert.ToInt16(txt_DENGIO.Text))
                    {
                        showErrorMess("Thời gian nhập không đúng!");
                        txt_TUGIO.SelectAll();
                        txt_TUGIO.Focus();
                        return false;
                    }
                }
                else if ((cbo_AMPMTU.Text.Trim() == "PM") && (cbo_AMPMDEN.Text.Trim() == "PM"))
                {
                    if (Convert.ToInt16(txt_TUGIO.Text) > Convert.ToInt16(txt_DENGIO.Text))
                    {
                        showErrorMess("Thời gian nhập không đúng!");
                        txt_TUGIO.SelectAll();
                        txt_TUGIO.Focus();
                        return false;
                    }
                }
                else if ((cbo_AMPMTU.Text.Trim() == "PM") && (cbo_AMPMDEN.Text.Trim() == "AM"))
                {
                    showErrorMess("Thời gian nhập không đúng!");
                    txt_TUGIO.SelectAll();
                    txt_TUGIO.Focus();
                    return false;
                }
            }
            return true;
        }
        private void btnIn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                DataSet ds = new DataSet();
                // kiểm tra số liệu trước khi in:
                if (!check_IN()) return;
                string thunganvien="";
                int id1 = txtthungan.Text.IndexOf("-");
                if (id1 == -1)
                { thunganvien = ""; }
                else
                {
                    thunganvien = txtthungan.Text.Substring(0, id1).Trim();
                }
                int tugio = 0,dengio = 0;
                if(cbo_AMPMTU.Text =="AM") 
                {tugio = Convert.ToInt32(txt_TUGIO.Text);}
                else
                {tugio = Convert.ToInt32(txt_TUGIO.Text) + 12;}
                if(cbo_AMPMDEN.Text =="AM")
                {dengio = Convert.ToInt32(txt_DENGIO.Text);}
                else
                {dengio = Convert.ToInt32(txt_DENGIO.Text) + 12;}
                string ngaynop = dtpNgayNop.SelectedDate.Value.Date.ToShortDateString();
                switch (IN)
                {
                    case 0: // tất cả danh sách
                        //ds = cls.get_DSLOG(strMadviqly, txtMA_KHANG.Text.Trim(), 0, thunganvien, i16ThangHT, i16NamHT, ngaynop, tugio, dengio, IN, IGIO);
                        ds = GlobalServices.Service_NPCUS.get_DSLOG(strMadviqly, txtMA_KHANG.Text.Trim(), 0, thunganvien, i16ThangHT, i16NamHT, ngaynop, tugio, dengio, IN, IGIO);
                        if (ds == null || ds.Tables.Count == 0)
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            rptDs_LogChamNo_Offline_All rpt = new rptDs_LogChamNo_Offline_All();
                            rpt.SetDataSource(ds.Tables[0]);
                            rpt.SetParameterValue("thungan","Thu ngân viên: " + txtthungan.Text);
                            rpt.SetParameterValue("thangnamhtoan", "Tháng năm HT: " + dtpThangHTtim.SelectedDate.Value.Date.Month.ToString() + " / " + dtpThangHTtim.SelectedDate.Value.Date.Year.ToString());
                            if(IGIO==0) rpt.SetParameterValue("thoigian","LOG IN Ngày :" + dtpNgayNop.Text.ToString());
                            if (IGIO == 1) rpt.SetParameterValue("thoigian", "LOG IN Ngày :" + dtpNgayNop.Text.ToString() + " Từ: " + tugio.ToString() +" giờ Đến "+ dengio.ToString()+" giờ");
                            //
                            rpt.SetParameterValue("pTendienluc", strTen_dviqly);
                            rpt.SetParameterValue("pTencongty", strTen_dviqly_CT);
                            //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                            UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                        }
                        else
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        break;
                    case 1: // in theo mã khách hàng
                        ds = cls.get_DSLOG(strMadviqly, txtMA_KHANG.Text.Trim(), 0, thunganvien, i16ThangHT, i16NamHT, ngaynop, tugio, dengio, IN, IGIO);
                        if (ds == null || ds.Tables.Count == 0)
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            rptDs_LogChamNo_Offline_All rpt = new rptDs_LogChamNo_Offline_All();
                            rpt.SetDataSource(ds.Tables[0]);
                            rpt.SetParameterValue("thungan", "Thu ngân viên: " + txtthungan.Text);
                            rpt.SetParameterValue("thangnamhtoan", "Tháng năm HT: " + dtpThangHTtim.SelectedDate.Value.Date.Month.ToString() + " / " + dtpThangHTtim.SelectedDate.Value.Date.Year.ToString());
                            if (IGIO == 0) rpt.SetParameterValue("thoigian", "LOG IN Ngày :" + dtpNgayNop.Text.ToString());
                            if (IGIO == 1) rpt.SetParameterValue("thoigian", "LOG IN Ngày :" + dtpNgayNop.Text.ToString() + " Từ: " + tugio.ToString() + " giờ Đến " + dengio.ToString() + " giờ");
                            //
                            rpt.SetParameterValue("pTendienluc", strTen_dviqly);
                            rpt.SetParameterValue("pTencongty", strTen_dviqly_CT);
                            //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                            UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                        }
                        else
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        break;
                    case 2: // in theo id hóa đơn
                        ds = cls.get_DSLOG(strMadviqly, txtMA_KHANG.Text.Trim(), Convert.ToInt64(txtID_HDON.Text.Trim()), thunganvien, i16ThangHT, i16NamHT, ngaynop, tugio, dengio, IN, IGIO);
                        if (ds == null || ds.Tables.Count == 0)
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            rptDs_LogChamNo_Offline_All rpt = new rptDs_LogChamNo_Offline_All();
                            rpt.SetDataSource(ds.Tables[0]);
                            rpt.SetParameterValue("thungan", "Thu ngân viên: " + txtthungan.Text);
                            rpt.SetParameterValue("thangnamhtoan", "Tháng năm HT: " + dtpThangHTtim.SelectedDate.Value.Date.Month.ToString() + " / " + dtpThangHTtim.SelectedDate.Value.Date.Year.ToString());
                            if (IGIO == 0) rpt.SetParameterValue("thoigian", "LOG IN Ngày :" + dtpNgayNop.Text.ToString());
                            if (IGIO == 1) rpt.SetParameterValue("thoigian", "LOG IN Ngày :" + dtpNgayNop.Text.ToString() + " Từ: " + tugio.ToString() + " giờ Đến " + dengio.ToString() + " giờ");
                            //
                            rpt.SetParameterValue("pTendienluc", strTen_dviqly);
                            rpt.SetParameterValue("pTencongty", strTen_dviqly_CT);
                            //ds_chamnooffline.WriteXmlSchema("D:\\Projects\\DSCHAMNO.xsd");
                            UtilReportOMS.RptManager.showReportToWin(this, rpt, strMadviqly, new string[] { "Formula1", "Formula2", "Formula3" }, new string[] { "Formula1", "Formula2", "Formula3" }, "CMIS2 - Report: Báo cáo NPC");
                        }
                        else
                        { showErrorMess("Không có dữ liệu theo điều kiện chọn"); return; }
                        break;
                }
            }
            catch
            { }
        }

        private void chk_GIO_Click(object sender, RoutedEventArgs e)
        {
            bool _Check = Convert.ToBoolean(chk_GIO.IsChecked);
            if (_Check == true)
            {
                Logtext_gio(true);
                IGIO = 1;
                txt_TUGIO.Focus();
            }
            else
            {
                Logtext_gio(false);
                IGIO = 0;
            }
        }
        private void Logtext_gio(bool bl)
        {
            txt_TUGIO.IsEnabled = bl;
            txt_DENGIO.IsEnabled = bl;
            cbo_AMPMTU.IsEnabled = bl;
            cbo_AMPMDEN.IsEnabled = bl;
        }

        private void rad_ALL_Click(object sender, RoutedEventArgs e)
        {
            get_IN();
        }

        private void rad_Khang_Click(object sender, RoutedEventArgs e)
        {
            get_IN();
        }

        private void rad_IDHDON_Click(object sender, RoutedEventArgs e)
        {
            get_IN();
        }
        private void get_IN()
        {
            if (rad_ALL.IsChecked == true)
            {
                txtMA_KHANG.IsEnabled = false;
                txtMA_KHANG.Text = "";
                txtID_HDON.IsEnabled = false;
                IN = 0;
                dtpNgayNop.Focus();
            }
            if (rad_Khang.IsChecked == true)
            {
                txtMA_KHANG.IsEnabled = true;
                txtMA_KHANG.Text = strMadviqly;
                txtID_HDON.IsEnabled = false;
                txtMA_KHANG.Focus();
                txtMA_KHANG.Select(6, 0);
                IN = 1;
            }
            if (rad_IDHDON.IsChecked == true)
            {
                txtMA_KHANG.IsEnabled = false;
                txtMA_KHANG.Text = "";
                txtID_HDON.IsEnabled = true;
                txtID_HDON.Text = "";
                txtID_HDON.Focus();
                IN = 2;
            }
        }
        private void txtID_HDON_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            try
            {
                short val;
                if (!Int16.TryParse(e.Text, out val))
                {
                    e.Handled = true;
                    showErrorMess("Hãy nhập số ");
                    return;
                }
                e.Handled = false;
                return;
            }
            catch (Exception ex)
            {
                showErrorMess("Lỗi khi nhập: " + ex.Message);
            }
        }

        #region GOT_LOSTFOCUS
        private void dtpNgayNop_LostFocus(object sender, RoutedEventArgs e)
        {
            dtpNgayNop.Background = Brushes.Transparent;
        }

        private void dtpNgayNop_GotFocus(object sender, RoutedEventArgs e)
        {
            dtpNgayNop.Background = Brushes.Gold;
        }

        private void dtpThangHTtim_GotFocus(object sender, RoutedEventArgs e)
        {
            dtpThangHTtim.Background = Brushes.Gold;
        }

        private void dtpThangHTtim_LostFocus(object sender, RoutedEventArgs e)
        {
            dtpThangHTtim.Background = Brushes.Transparent;
        }

        private void txtMA_KHANG_GotFocus(object sender, RoutedEventArgs e)
        {
            txtMA_KHANG.Background = Brushes.Gold;
        }

        private void txtMA_KHANG_LostFocus(object sender, RoutedEventArgs e)
        {
            txtMA_KHANG.Background = Brushes.Transparent;
        }

        private void txtID_HDON_GotFocus(object sender, RoutedEventArgs e)
        {
            txtID_HDON.Background = Brushes.Gold;
        }

        private void txtID_HDON_LostFocus(object sender, RoutedEventArgs e)
        {
            txtID_HDON.Background = Brushes.Transparent;
        }

        private void txt_TUGIO_GotFocus(object sender, RoutedEventArgs e)
        {
            txt_TUGIO.Background = Brushes.Gold;
        }

        private void txt_TUGIO_LostFocus(object sender, RoutedEventArgs e)
        {
            txt_TUGIO.Background = Brushes.Transparent;
            if (txt_TUGIO.Text.Trim() == "") txt_TUGIO.Text = "0";
        }

        private void cbo_AMPMTU_GotFocus(object sender, RoutedEventArgs e)
        {
            cbo_AMPMTU.Background = Brushes.Gold;
        }

        private void cbo_AMPMTU_LostFocus(object sender, RoutedEventArgs e)
        {
            cbo_AMPMTU.Background = Brushes.Transparent;
        }

        private void txt_DENGIO_GotFocus(object sender, RoutedEventArgs e)
        {
            txt_DENGIO.Background = Brushes.Gold;
        }

        private void txt_DENGIO_LostFocus(object sender, RoutedEventArgs e)
        {
            txt_DENGIO.Background = Brushes.Transparent;
            if (txt_DENGIO.Text.Trim() == "") txt_DENGIO.Text = "0";
        }

        private void cbo_AMPMDEN_GotFocus(object sender, RoutedEventArgs e)
        {
            cbo_AMPMDEN.Background = Brushes.Gold;
        }

        private void cbo_AMPMDEN_LostFocus(object sender, RoutedEventArgs e)
        {
            cbo_AMPMDEN.Background = Brushes.Transparent;
        }
        #endregion

    }
}
